<?php

/*
 * 验证方法
 * @author php_angel <php_angel@126.com>
 * @date 2012-08-01
 */
 
/*
 * 是否正确的邮箱地址
 */
if ( ! function_exists('is_email'))
{
	function is_email($email)
	{
		return preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i', $email) ? TRUE : FALSE;
	}
}

/*
 * 是否正确的邮编地址
 */
if (!function_exists('is_zip'))
{
	function is_zip($zip)
	{
		return preg_match('/^[1-9]\d{5}$/', $zip) ? TRUE : FALSE;
	}
}

/*
 * 是否正确的固定电话
 */
if ( ! function_exists('is_tel'))
{
	function is_tel($tel)
	{
		return preg_match('/^(0\d{2,3})?\-?\d{7,8}$/', $tel) ? TRUE : FALSE;
	}
}

/*
 * 是否正确的手机号码
 */
if ( ! function_exists('is_phone'))
{
	function is_phone($phone)
	{
		return preg_match('/^(\d{2,3})?\d{11}$/', $phone) ? TRUE : FALSE;
	}
}

/*
 * 是否有效ip（ipv4）
 */
if ( ! function_exists('is_ipv4'))
{
	function is_ipv4($ip)
	{
		if (function_exists('filter_var'))
		{
			return (boolean)filter_var($ip, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4));
		}
		return preg_match('/^((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?1)){3}$/', $ip) ? TRUE : FALSE;
	}
}

/*
 * 是否有效ip（ipv6）
 */
if ( ! function_exists('is_ipv6'))
{
	function is_ipv6($ip)
	{
		if (function_exists('filter_var'))
		{
			return (boolean)filter_var($ip, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV6));
		}
		return preg_match('/^(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|(25[0-5]|(2[0-4]|1\d|[1-9])?\d)(\.(?7)){3})$/i', $ip) ? TRUE : FALSE;
	}
}

/*
 * 是否有效ip
 */
if ( ! function_exists('is_ip'))
{
	function is_ip($ip, $version = 4)
	{
		$version = $version == 4 ? 4 : 6;
		$fun = 'is_ipv'.$version;
		if ( ! function_exists($fun))
		{
			return TRUE;
		}
		return $fun($ip);
	}
}

/*
 * 是否中文字符
 */
if ( ! function_exists('is_cn'))
{
	function is_cn($cn)
	{
		return preg_match('/^[\u4e00-\u9fa5]+$/', $cn) ? TRUE : FALSE;
	}
}

/*
 * 是否闰年,能被4整除不能被100整除或能被400整除
 */
if ( ! function_exists('is_leapyear'))
{
	function is_leapyear($year)
	{
		$year = intval($year);
		return (($year%4 == 0 && $year%100 != 0) || $year%400 == 0) ? TRUE : FALSE;
	}
}

/*
 * 是否日期格式，2012-01-01
 */
if ( ! function_exists('is_date'))
{
	function is_date($date)
	{
		if (preg_match('/^(\d{4})\-(0[1-9]|1[0-2])\-(\d{1,2})$/', $date, $match))
		{
			$m = array(31,28,31,30,31,30,31,31,30,31,30,31);
			if (is_leapyear($match[1]))
			{
				$m[1] = 29;
			}
			return intval($match[3]) > $m[intval($match[2])-1] ? FALSE : TRUE;
		}
		else
		{
			return FALSE;
		}
	}
}

/*
 * 是否日期时间格式，2012-01-01 00:00:00
 */
if ( ! function_exists('is_datetime'))
{
	function is_datetime($datetime)
	{
		if (preg_match('/^([0-9\-]+) [0-5][0-9]:[0-5][0-9]:[0-5][0-9]$/', $datetime, $match))
		{
			return is_date($match[1]);
		}
		else
		{
			return FALSE;
		}
	}
}